package leetcode.Fiftyone_to_One_hundred;

import java.util.Stack;

/**
 * 简化路径
 */
public class Test71 {

    public static String simplifyPath(String path) {
        String[] str = path.split("/");
        Stack<String> stack = new Stack<>();
        // 遇到 .. 表示要返回上一级目录需要pop栈顶元素；
        for (int i = 0; i < str.length; i++) {
            if (str[i].equals("..") && !stack.isEmpty())
                stack.pop();
            else
                // .表示当前目录不用管，直接跳过，还要防止出现/../usa与//dc的情况，于是也需要过滤它们，不能加入到栈里面
                if (!str[i].equals(".") && !str[i].equals("..") && !str[i].equals(""))
                    stack.push(str[i]);
        }
        if (stack.size() == 0) {
            return "/";
        } else {
            // String.join() 方法的含义是：为 stack 的每个元素间添加分隔符 /
            return "/" + String.join("/", stack);
        }
    }

    public static void main(String[] args) {
        System.out.println(simplifyPath("/home//foo"));
    }
}
